import { IPSDataEntity } from '../ipsdata-entity';
import { IPSDEDataSync } from '../datasync/ipsdedata-sync';
import { IPSDELogicNode } from './ipsdelogic-node';
import { IPSDELogicParam } from './ipsdelogic-param';

/**
 *
 * 继承父接口类型值[DEDATASYNC]
 * @export
 * @interface IPSDEDEDataSyncLogic
 */
export interface IPSDEDEDataSyncLogic extends IPSDELogicNode {
  /**
   * 目标实体数据同步对象
   *
   * @type {IPSDEDataSync}
   */
  getDstPSDEDataSync(): IPSDEDataSync | null;

  /**
   * 目标实体数据同步对象
   *
   * @type {IPSDEDataSync}
   */
  get dstPSDEDataSync(): IPSDEDataSync | null;

  /**
   * 目标实体数据同步对象（必须存在）
   *
   * @type {IPSDEDataSync}
   */
  getDstPSDEDataSyncMust(): IPSDEDataSync;

  /**
   * 目标逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  get dstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数对象（必须存在）
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParamMust(): IPSDELogicParam;

  /**
   * 目标实体对象
   *
   * @type {IPSDataEntity}
   */
  getDstPSDataEntity(): IPSDataEntity | null;

  /**
   * 目标实体对象
   *
   * @type {IPSDataEntity}
   */
  get dstPSDataEntity(): IPSDataEntity | null;

  /**
   * 目标实体对象（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getDstPSDataEntityMust(): IPSDataEntity;

  /**
   * 事件类型
   * @description 值模式 [平台数据通知监控行为（新建、更新、删除）] {1：新建、 2：更新、 4：删除、 256：自定义、 512：自定义2 }
   * @type {( number | 1 | 2 | 4 | 256 | 512)}
   * @default 0
   */
  eventType: number | 1 | 2 | 4 | 256 | 512;
}
